package com.jcark.utilscode.listener

import android.text.TextUtils
import android.view.View
import com.blankj.utilcode.util.NetworkUtils
import com.jcark.utilscode.MToastUtils
import com.jcark.utilscode.R

/**
 * Description: 具有检测网络是否可用的事件监听<br>
 * @author King.Zi<br>
 * @date 2022/8/23<br>
 * Email: 78688689@qq.com
 * @param errorMessage 网络无效时的提示信息，可在应用的 strings.xml文件中覆盖资源message_invalid_network来更换提示语
 */
abstract class WithCheckNetworkClickListener(
    private var errorMessage: String? = null
) : View.OnClickListener {

    override fun onClick(v: View) {
        if (NetworkUtils.isNetworkAvailable()) {
            onNetworkAvailable(v)
        } else {
            onNetworkInvalid(v)
        }
    }

    /**
     * 网络有效
     */
    protected abstract fun onNetworkAvailable(v: View)

    /**
     * 网络无效
     */
    open fun onNetworkInvalid(v: View) {
        if (TextUtils.isEmpty(errorMessage)) {
            errorMessage = v.context.getString(R.string.message_invalid_network)
        }
        MToastUtils.shortShow(message = errorMessage!!)
    }
}